home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / Online / Term / Extras / Source / gtlayout-source.lha / LT_GetCode.c < prev    next >
C/C++ Source or Header  |  1996-08-22  |  2KB  |  74 lines

  1. /*
  2. **    GadTools layout toolkit
  3. **
  4. **    Copyright © 1993-1996 by Olaf `Olsen' Barthel
  5. **        Freely distributable.
  6. **
  7. **    :ts=4
  8. */
  9.  
  10. #ifndef _GTLAYOUT_GLOBAL_H
  11. #include "gtlayout_global.h"
  12. #endif
  13.  
  14. /****** gtlayout.library/LT_GetCode ******************************************
  15. *
  16. *   NAME
  17. *    LT_GetCode -- Easy raw key event to ANSI conversion.
  18. *
  19. *   SYNOPSIS
  20. *    Key = LT_GetCode(Qualifier,Class,Code,Gadget);
  21. *     D0                  D0     D1    D2    A0
  22. *
  23. *    LONG LT_GetCode(ULONG,ULONG,UWORD,struct Gadget *);
  24. *
  25. *   FUNCTION
  26. *    The user interface layout engine can convert IDCMP_RAWKEY
  27. *    events into ANSI codes. Pass in the data you copied from
  28. *    the IntuiMessage here.
  29. *
  30. *   INPUTS
  31. *    Qualifier - Copied from IntuiMessage->Qualifier
  32. *
  33. *    Class - Copied from IntuiMessage->Class
  34. *
  35. *    Code - Copied from IntuiMessage->Code
  36. *
  37. *    Gadget - Copied from IntuiMessage->IAddress
  38. *
  39. *   RESULT
  40. *    Key - ANSI code generated from the input data
  41. *        or -1 if no such code was to be generated.
  42. *
  43. ******************************************************************************
  44. *
  45. */
  46.  
  47. LONG LIBENT
  48. LT_GetCode(REG(d0) ULONG MsgQualifier,REG(d1) ULONG MsgClass,REG(d2) UWORD MsgCode,REG(a0) struct Gadget *MsgGadget)
  49. {
  50.     if(MsgClass == IDCMP_RAWKEY && !(MsgCode & IECODE_UP_PREFIX) && KeymapBase)
  51.     {
  52.         UBYTE                Buffer[10];
  53.         struct InputEvent    Event;
  54.         LONG                Len;
  55.  
  56.         Event.ie_NextEvent            = NULL;
  57.         Event.ie_Code                 = MsgCode & ~IECODE_UP_PREFIX;
  58.         Event.ie_Qualifier            = MsgQualifier;
  59.         Event.ie_Class                = IECLASS_RAWKEY;
  60.         Event.ie_SubClass            = 0;
  61.         Event.ie_position.ie_addr    = (APTR)MsgGadget;
  62.  
  63.         Buffer[0] = 0;
  64.  
  65.         if((Len = MapRawKey(&Event,Buffer,9,NULL)) > 0)
  66.         {
  67.             if(Buffer[0] != 0x9B || Len == 1)
  68.                 return((LONG)Buffer[0]);
  69.         }
  70.     }
  71.  
  72.     return(-1);
  73. }
  74.